package com.nowcoder;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

/**
 * 按照指定规则对输入的字符串进行处理。
 * 详细描述：
 * 第一步：将输入的两个字符串str1和str2进行前后合并。如给定字符串 "dec" 和字符串 "fab" ， 合并后生成的字符串为 "decfab"
 * 第二步：对合并后的字符串进行排序，要求为：下标为奇数的字符和下标为偶数的字符分别从小到大排序。
 * 第三步：对排序后的字符串中的'0'~'9'、'A'~'F'和'a'~'f'字符，需要进行转换操作。
 */
public class MergeString {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            String s1 = in.next();
            String s2 = in.next();
            List<Character> odd = new ArrayList();
            List<Character> even = new ArrayList<>();
            String s = s1 + s2;
            for (int i = 0; i < s.length(); i++) {
                if (i % 2 == 0) {
                    even.add(s.charAt(i));
                } else {
                    odd.add(s.charAt(i));
                }
            }
            Collections.sort(even);
            Collections.sort(odd);
            StringBuilder builder = new StringBuilder();
            for (int i = 0; i < even.size(); i++) {
                build(builder, even.get(i));
                if (odd.size() > i) {
                    build(builder, odd.get(i));
                }
            }
            System.out.println(builder);
        }
    }
    private static void build(StringBuilder builder, Character c) {
        if ((c >= '0' && c <= '9')||(c >= 'a' && c <= 'f')||(c >= 'A' && c <= 'F')) {
            String binary = Integer.toBinaryString(Integer.parseInt(String.valueOf(c), 16));
            StringBuilder binaryBuilder = new StringBuilder(binary);
            while (binaryBuilder.length() < 4) {
                binaryBuilder.insert(0, "0");
            }
            binaryBuilder = binaryBuilder.reverse();
            builder.append(Integer.toHexString(Integer.parseInt(binaryBuilder.toString(), 2)).toUpperCase());
        }else{
            builder.append(c);
        }
    }
}
